package com.hsurosy.hsuchain.nft.user.infrastructure.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hsurosy.hsuchain.nft.user.domain.entity.User;
import jakarta.validation.constraints.NotNull;
import org.apache.ibatis.annotations.Mapper;

/**
 * 用户数据库访问层的 Mapper 接口
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 18:22
 * @Description
 * @Version: v1.0.0
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据用户 ID 查询用户信息
     *
     * @param id 用户的唯一标识符
     * @return 返回对应 ID 的用户对象，若找不到则返回 null
     */
    User findById(long id);

    /**
     * 根据用户昵称查询用户信息
     *
     * @param nickname 用户的昵称，不能为空
     * @return 返回匹配该昵称的用户对象，若找不到则返回 null
     */
    User findByNickname(@NotNull String nickname);

    /**
     * 根据用户邀请码查询用户信息
     *
     * @param inviteCode 用户的邀请码，不能为空
     * @return 返回匹配该邀请码的用户对象，若找不到则返回 null
     */
    User findByInviteCode(@NotNull String inviteCode);

    /**
     * 根据用户手机号查询用户信息
     *
     * @param telephone 用户的手机号，不能为空
     * @return 返回匹配该手机号的用户对象，若找不到则返回 null
     */
    User findByTelephone(@NotNull String telephone);

    /**
     * 根据用户手机号和密码哈希查询用户信息
     *
     * @param telephone    用户的手机号
     * @param passwordHash 用户的密码哈希值
     * @return 返回匹配该手机号和密码的用户对象，若找不到则返回 null
     */
    User findByTelephoneAndPass(String telephone, String passwordHash);
}
